package com.example.concurrent.singleton;

import java.io.Serializable;
//1.加final，为了防止继承，之后重写相关的方法，导致破坏单例；
//2.实现序列化结构，然后再readResolve() ,这样防止反序列化破坏单例；
public final class Singleton implements Serializable {
	// 静态初始化成员变量，没有线程不安全，保证单例；相信JVM
	private static final Singleton INSTANCE = new Singleton();

	// 构造方法设置为私有，防止外部new对象，保证单例；但是反射会破坏单例
	private Singleton() {
	}
	//1.更多的控制，泛型支持
	public static Singleton getInstance() {
		return INSTANCE;
	}

	public Object readResolve() {
		return INSTANCE;
	}
}
